Aller au contenu principal

Démarrer le système

Démarrer le système

L'objectif de cette procédure est de démarrer le système.

Pods K8S

La suite d'un redémarrage complet du cluster Kubernetes, les commandes suivantes doivent être exécutées systématiquement.

kubectl -n kosmos-iam delete pod -l app.kubernetes.io/instance=keycloak-cluster

kubectl -n kosmos-logs rollout restart ds vector

kubectl -n kosmos-system-restricted delete pod -l app.kubernetes.io/instance=eds-back
kubectl -n kosmos-system-restricted delete pod -l app.kubernetes.io/instance=eds-front

kubectl -n kosmos-system-restricted delete pod -l app.kubernetes.io/instance=portal-back
kubectl -n kosmos-system-restricted delete pod -l app.kubernetes.io/instance=portal-front-kosmos
kubectl -n kosmos-portal delete pod -l app.kubernetes.io/instance=portal-front-shared

kubectl -n kosmos-data delete pod -l app.kubernetes.io/instance=datahub

A l'issue de cette relance, l'ensemble des pods doit être en état Running ou Completed (pour les pods issus de Jobs) et tous les conteneurs Ready.

La commande suivante, en mode nominal, ne doit donc retourner aucun pod.

kubectl  get pod -A | grep -vE "1/1|2/2|3/3|4/4|5/5|6/6|7/7|Completed"

Pour redémarrer une configuration KDL, il suffit de redémarrer les VMs qui hébergent le système en commençcant par la VM repo et s'assurer que les services hébergés sont fonctionnels (gitea, zot, gitlab, dns et ntp). On peut ensuite redémarrer les autres VMs restantes.

  • docker ps (pour gitlab)
  • systemctl status named et chronyd

L'ensemble des services hébergées vont redémarrés seuls. Les services dans k8s peuvent plusieurs minutes à se stabiliser (environ 30 minutes). Après quoi, il faudra aller vérifier dans chaque namespace les pods en erreur si il y en a.

Troubleshooting

Pods Pending sur Insufficient CPU

Lorsqu'un pod est Pending en raison de Insufficient cpu

kubectl get pod -A | grep Pending
kubectl -n <ns> describe pod <pod>

Drainer le noeud afin d'y libérer des ressources, puis rendre à nouveau le noeud disponible (ex: avec un pod de shared-S3)

ns=shared-s3
pod=s3-cluster-pool-0-1
pvc=$(kubectl -n ${ns} get pod ${pod} -o jsonpath='{.spec.volumes[0].persistentVolumeClaim.claimName}')
pv=$(kubectl -n ${ns} get pvc ${pvc} -o jsonpath='{.spec.volumeName}')
node=$(kubectl get pv ${pv} -o jsonpath='{.spec.nodeAffinity.required.nodeSelectorTerms[0].matchExpressions[0].values[0]}')


kubectl drain --delete-emptydir-data --ignore-daemonsets --force=true --disable-eviction ${node}
# Ne pas tenir compte des Warning

kubectl uncordon ${node}